let (>>=): (('a => 'r) => 'r, 
  ('a, 'b => 'r) => 'r, 
  'b => 'r) => 'r;
